package com.jzwl.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**

 * 字符串工具类，提供常见的字符串操作

 */
public class StringUtil {
	/**匹配数字的数字正则表达式*/
	public static final String REGEX_NUMBER = "\\d+"; 
	// 防止直接实例化

	private StringUtil() {};

	/**

	 *  为空或者空白 

	 * @param str

	 * @return 如果为空就返回true

	 */
	public static boolean isEmptyOrBlank(String str) {
		return str == null || str.trim().length() <= 0;
	}
	/**

	 *  不为空或者空白 

	 * @param str

	 * @return 如果不为空就返回true

	 */
	public static boolean isNotEmptyOrBlank(String str) {
		
		return str != null && str.trim().length() > 0;
		
	}
	
	/**
	 * 检测某个字符变量是否为空；<br>
	 * 为空的情况，包括：null，空串或只包含可以被 trim() 的字符；
	 */
	public final static boolean isEmpty(String value) {
		if (value == null || value.trim().length() == 0)
			return true;
		else
			return false;
	}
	
	/**
	 * 抽取出字符串中的所有数字,如果没有数字字符，则返回空字符串
	 */
	public static String drawNumber(String source){ 
		return drawMatches(source,REGEX_NUMBER) ;
	}
	
	/**
	 * 从字符串中取出满足正则表达式条件的字符串
	 */
	public static String drawMatches(String source,String regex){
		Matcher matcher = getMatcher(source,regex) ;
		StringBuffer buff = new StringBuffer() ;
		while(matcher.find()){
			buff.append((matcher.group()));
		}
		return buff.toString() ;
	}
	
	/**返回字符串source匹配正则表达式regex的matcher实例(regex对大小写敏感)*/
	public static Matcher getMatcher(String source,String regex){
		Pattern pattern = Pattern.compile(regex) ; 
		return pattern.matcher(source) ;
	}

	/**
	 * 验证是否为坐标的格式
	 */
	public static boolean validateLocation(String location){
		if(StringUtil.isEmpty(location)){
			return false;
		}else if(!location.contains(",")){
			return false;
		}
		return true;
	}
	
	/**
	 * 组装sql where语句
	 * @param buildsql
	 * @return
	 */
	public static StringBuffer addWhere(StringBuffer buildsql){
		if (buildsql.toString().contains("where") || buildsql.toString().contains("WHERE")) {
			//第一次拼接 where子句不需要and
			buildsql.append(" AND ");
		}else{
			//不是第一次拼接where，则需要加'and'
			buildsql.append(" WHERE ");
		}
		return buildsql;
	}
	/**
	 * 将小写的数字转换为大写 --gyp
	 * eg:输入11  return 一一
	 * @param num
	 * @return
	 */
	public static String numToUpper(int num) {    
	        String u[] = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九" };    
	        char[] str = String.valueOf(num).toCharArray();    
	        String rstr = "";    
	        for (int i = 0; i < str.length; i++) {    
	            rstr = rstr + u[Integer.parseInt(str[i] + "")];    
	        }    
	        return rstr;    
	    }
}
